package com.mixsmart.commonweb.upload;

import java.io.InputStream;
import java.util.Map;

import com.mixsmart.commonweb.bean.entity.TCAttachment;
import com.mixsmart.core.bean.MixResponse;

/**
 * 上传文件
 * @author lmq
 * @version 1.0
 * @since JDK1.6以上
 * <br />
 * 2016年7月22日
 */
public interface IUploadFile {

	/**
	 * 上传文件
	 * @param is
	 * @param fileName 文件名称
	 * @param contentType 文件内容类型
	 * @param fileSize 文件大小
	 * @param userId 上传用户ID
	 * @param params 其他参数
	 * @return 返回 MixResponse 对象；
	 * 通过getResult()方法判断是否成功（等于1表示成功）；
	 * 如果成功，调用getData()方法获取附件信息.
	 */
	public MixResponse<TCAttachment> upload(InputStream is, String fileName, String contentType, 
			long fileSize, String userId, Map<String, Object> params);
	
	/**
	 * 上传文件
	 * @param is
	 * @param fileName 文件名称
	 * @param contentType 文件内容类型
	 * @param fileSize 文件大小
	 * @param userId 上传用户ID
	 * @param attType 附件类型
	 * @param params 其他参数
	 * @return 返回 MixResponse 对象；
	 * 通过getResult()方法判断是否成功（等于1表示成功）；
	 * 如果成功，调用getData()方法获取附件信息.
	 */
	public MixResponse<TCAttachment> upload(InputStream is, String fileName, String contentType, 
			long fileSize, String userId, String attType, Map<String, Object> params);
	
	/**
	 * 上传文件
	 * @param is
	 * @param fileName 文件名称
	 * @param contentType 文件内容类型
	 * @param fileSize 文件大小
	 * @param userId 上传用户ID
	 * @param attType 附件类型
	 * @param targetDirPath 相对目录
	 * @param params 其他参数
	 * @return 返回 MixResponse 对象；
	 * 通过getResult()方法判断是否成功（等于1表示成功）；
	 * 如果成功，调用getData()方法获取附件信息.
	 */
	public MixResponse<TCAttachment> upload(InputStream is, String fileName, String contentType, 
			long fileSize, String userId, String attType, String targetDirPath, Map<String, Object> params);
	
	/**
	 * 上传文件
	 * @param is
	 * @param fileName 文件名称
	 * @param contentType 文件内容类型
	 * @param fileSize 文件大小
	 * @param userId 上传用户ID
	 * @param attType 附件类型
	 * @param targetDirPath 最终存储文件位置
	 * @param targetFileName 最终存储文件名称
	 * @return 返回 MixResponse 对象；
	 * 通过getResult()方法判断是否成功（等于1表示成功）；
	 * 如果成功，调用getData()方法获取附件信息.
	 */
	public MixResponse<TCAttachment> upload(InputStream is, String fileName, String contentType, 
			long fileSize, String userId, String attType, String targetDirPath, String targetFileName);
	
	/**
	 * 上传文件
	 * @param is 输入流
	 * @param fileName 源文件名称
	 * @param contentType 文件类型
	 * @param isUploadClassify 是否归类
	 * @param attType 附件类型
	 * @param targetDirPath 最终存储文件位置
	 * @param targetFileName 目标文件名称
	 * @return 返回文件相对路径
	 */
	public String upload(InputStream is, String fileName, String contentType, boolean isUploadClassify,
			String attType, String targetDirPath, String targetFileName);
	
	/**
	 * 上传文件
	 * @param is 输入流
	 * @param fileName 源文件名称
	 * @param contentType 文件类型
	 * @param isUploadClassify 是否归类
	 * @param attType 附件类型
	 * @param targetDirPath 最终存储文件位置
	 * @param params 其他参数
	 * @return 返回文件相对路径
	 */
	public String upload(InputStream is, String fileName, String contentType, boolean isUploadClassify,
			String attType, String targetDirPath, Map<String, Object> params);
	
	/**
	 * 上传文件
	 * @param is 输入流
	 * @param fileName 源文件名称
	 * @param contentType 文件类型
	 * @param attType 附件类型
	 * @param params 其他参数
	 * @return 返回文件相对路径
	 */
	public String upload(InputStream is, String fileName, String contentType,
			String attType, Map<String, Object> params);
	
	/**
	 * 上传文件
	 * @param is 输入流
	 * @param fileName 源文件名称
	 * @param targetDirPath 目标文件路径
	 * @return 返回文件相对路径
	 */
	public String upload(InputStream is, String fileName, String targetDirPath);
	
}
